﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WMM.Tapioca.Taxonomy;

namespace WMM.Tapioca.XbrlDimension
{
    /// <summary>
    /// A consecutive relationship set is the set of relationships starting at an all or notAll 
    /// relationship, and following all subsequent consecutive relationships
    /// </summary>
    public class ConsecutiveRelationshipsSet
    {
        private HasHypercube hasHypercube;

        /// <summary>
        /// Represents a an all or notAll relationship.
        /// </summary>
        public HasHypercube HasHypercube
        {
            get { return hasHypercube; }
            set { hasHypercube = value; }
        }       

        private List<HypercubeDimension> hypercubeDimensions;

        /// <summary>
        /// Represents a list of HypercubeDimension relationships.
        /// </summary>
        public List<HypercubeDimension> HypercubeDimensions
        {
            get { return hypercubeDimensions; }
            set { hypercubeDimensions = value; }
        }

        private List<DimensionDomain> dimensionDomains;

        /// <summary>
        /// Represents a list of DimensionDomain relationships.
        /// </summary>
        public List<DimensionDomain> DimensionDomains
        {
            get { return dimensionDomains; }
            set { dimensionDomains = value; }
        }

        private List<DimensionDefault> dimensionDefaults;

        /// <summary>
        /// Represents a list of DimensionDefault relationships.
        /// </summary>
        public List<DimensionDefault> DimensionDefaults
        {
            get { return dimensionDefaults; }
            set { dimensionDefaults = value; }
        }

        private List<DomainMember> domainMembers;

        /// <summary>
        /// Represents a list of DomainMember relationships.
        /// </summary>
        public List<DomainMember> DomainMembers
        {
            get { return domainMembers; }
            set { domainMembers = value; }
        }

        private List<Concept> members;

        /// <summary>
        /// Represents a list of DomainMember relationships.
        /// </summary>
        public List<Concept> Members
        {
            get { return members; }
            set { members = value; }
        }

        /// <summary>
        /// Constructor.
        /// </summary>
        public ConsecutiveRelationshipsSet()
        {
            hypercubeDimensions = new List<HypercubeDimension>();
            dimensionDomains = new List<DimensionDomain>();
            dimensionDefaults = new List<DimensionDefault>();
            domainMembers = new List<DomainMember>();
            members = new List<Concept>();
        }
    }
}
